package org.celery.modules.ticket.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import org.springblade.core.mp.base.BaseEntity;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

/**
 * 订单表实体类
 *
 * @author Celery
 * @since 2023-06-12
 */
@Data
@TableName("celery_ticket")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Ticket对象", description = "订单表")
public class Ticket extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 订单id或者为订单编号，唯一标识
     */
    @ApiModelProperty(value = "订单id或者为订单编号，唯一标识")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * 店铺id
     */
    @ApiModelProperty(value = "店铺id")
    private Long storeId;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private Long userId;
    /**
     * 用户名称
     */
    @ApiModelProperty(value = "用户名称")
    private String userName;
    /**
     * 交易时间
     */
    @ApiModelProperty(value = "交易时间")
    private LocalDateTime tradingHours;
    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime orderUpdateTime;
    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String tradeName;
    /**
     * 物品规格
     */
    @ApiModelProperty(value = "物品规格")
    private String specifications;
    /**
     * 交易状态
     */
    @ApiModelProperty(value = "交易状态")
    private String stepStatus;
    /**
     * 商品单价
     */
    @ApiModelProperty(value = "商品单价")
    private BigDecimal commodityUnivalent;
    /**
     * 商品数量
     */
    @ApiModelProperty(value = "商品数量")
    private Integer commodityNum;
    /**
     * 商品金额
     */
    @ApiModelProperty(value = "商品金额")
    private BigDecimal commodityPrice;
    /**
     * 订单操作状态，1去打单，2发货
     */
    @ApiModelProperty(value = "订单操作状态，1去打单，2发货")
    private Integer operate;
    /**
     * 实际支付价格
     */
    @ApiModelProperty(value = "实际支付价格")
    private BigDecimal actualPrice;
    /**
     * 订单整体状态
     */
    @ApiModelProperty(value = "订单整体状态")
    private String orderStatus;
    /**
     * 买家信息
     */
    @ApiModelProperty(value = "买家信息")
    private String buyerInfo;
    /**
     * 收货地址
     */
    @ApiModelProperty(value = "收货地址")
    private String address;
    /**
     * 订单操作方式，1手动发货，2查看订单详细，3跳转退款页
     */
    @ApiModelProperty(value = "订单操作方式，1手动发货，2查看订单详细，3跳转退款页")
    private Integer orderOperate;
    /**
     * 留言信息
     */
    @ApiModelProperty(value = "留言信息")
    private String messageInfo;
    /**
     * 店铺备注
     */
    @ApiModelProperty(value = "店铺备注")
    private String storeNotes;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String baseInfo;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String extAttributes;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String nativeLogistics;
    private String officialLogisticOrder;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String orderRateInfo;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String productItems;
    /**
     * 订单json数据
     */
    @ApiModelProperty(value = "订单json数据")
    private String tradeTerms;

    /**
     * 新增字段，图片地址
     */
    @ApiModelProperty(value = "图片地址")
    private String imgUrl;
    /**
     * 新增字段，时间更新间隔
     */
    @ApiModelProperty(value = "时间更新间隔")
    private String timeInterval;
    /**
     * 新增字段，退款状态
     */
    @ApiModelProperty(value = "退款状态")
    private String refundStatus;
    /**
     * 新增字段，商品货号
     */
    @ApiModelProperty(value = "商品货号")
    private String productNumber;
    /**
     * 新增字段，交易状态字符串
     */
    private String stepStatusStr;
    /**
     * 新增字段，运费
     */
    private Integer shippingFee;
    /**
     * 新增字段，买家具体信息
     */
    private String buyerContact;
    /**
     * 新增字段，交易平台
     */
    private String tradingPlatform;
    /**
     * 新增字段，支付状态
     */
    private String payStatus;
    /**
     * 新增字段，联系人在平台的IM账号
     */
    private String buyerImPlatform;
    /**
     * 新增字段，联系人在平台的IM账号
     */
    private String sellerImPlatform;
    /**
     * 新增字段，手机号
     */
    private String mobile;
    /**
     * 新增字段，店铺备注的id
     */
    private String refundId;

    /**
     * 新增字段，详细地址
     */
    private String detailAddress;

    /**
     * 新增字段
     */
    private Long productId;

    /**
     * 添加默认的地址
     */
    private String baseUrl;
    /**
     * 取消确认状态
     */
    @ApiModelProperty(value = "1 = 确认, 0 = 未确认")
    private Integer cancelConfirmStatus;
}
